package admin

import (
	"time"

	"github.com/google/uuid"
	"techoiceness.com/aiagent/llm-gateway/internal/entity"
)

// CreateLLMProviderRequest 创建LLM提供商请求
type CreateLLMProviderRequest struct {
	Name         string                 `json:"name" binding:"required"`
	ProviderType string                 `json:"provider_type" binding:"required"`
	BaseURL      string                 `json:"base_url" binding:"required"`
	APIKey       string                 `json:"api_key" binding:"required"`
	Config       map[string]interface{} `json:"config,omitempty"`
	IsEnabled    bool                   `json:"is_enabled"`
	IsDefault    bool                   `json:"is_default"`
	Models       []LLMModelInfo         `json:"models,omitempty"`
	Description  string                 `json:"description"`
}

// UpdateLLMProviderRequest 更新LLM提供商请求
type UpdateLLMProviderRequest struct {
	Name        *string                 `json:"name,omitempty"`
	BaseURL     *string                 `json:"base_url,omitempty"`
	APIKey      *string                 `json:"api_key,omitempty"`
	Config      *map[string]interface{} `json:"config,omitempty"`
	IsEnabled   *bool                   `json:"is_enabled,omitempty"`
	IsDefault   *bool                   `json:"is_default,omitempty"`
	Models      *[]LLMModelInfo         `json:"models,omitempty"`
	Description *string                 `json:"description,omitempty"`
}

// LLMModelInfo LLM模型信息
type LLMModelInfo struct {
	Name        string  `json:"name" binding:"required"`
	DisplayName string  `json:"display_name"`
	MaxTokens   int     `json:"max_tokens"`
	InputPrice  float64 `json:"input_price"`
	OutputPrice float64 `json:"output_price"`
	Description string  `json:"description"`
	IsDefault   bool    `json:"is_default"`
}

// SetLLMProviderEnabledRequest 设置提供商启用状态请求
type SetLLMProviderEnabledRequest struct {
	IsEnabled bool `json:"is_enabled"`
}

// LLMProviderDetail LLM提供商详情
type LLMProviderDetail struct {
	ID           uuid.UUID              `json:"id"`
	Name         string                 `json:"name"`
	ProviderType string                 `json:"provider_type"`
	BaseURL      string                 `json:"base_url"`
	IsEnabled    bool                   `json:"is_enabled"`
	IsDefault    bool                   `json:"is_default"`
	Config       *entity.ProviderConfig `json:"config,omitempty"`
	Models       []entity.ModelInfo     `json:"models,omitempty"`
	Description  string                 `json:"description"`
	CreatedAt    time.Time              `json:"created_at"`
	UpdatedAt    time.Time              `json:"updated_at"`
}

// LLMProviderSummary LLM提供商摘要
type LLMProviderSummary struct {
	ID           uuid.UUID `json:"id"`
	Name         string    `json:"name"`
	ProviderType string    `json:"provider_type"`
	IsEnabled    bool      `json:"is_enabled"`
	IsDefault    bool      `json:"is_default"`
	ModelCount   int       `json:"model_count"`
}
